Properly check result of g_utf8_get_char_validated()
authorMaks Naumov <maksqwe1@ukr.net>
Sun, 11 Jan 2015 19:27:37 +0000 (11:27 -0800)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 11 Jan 2015 20:46:06 +0000 (15:46 -0500)
g_utf8_get_char_validated() may return -1 or -2
return type is gunichar(guint32)

Therefore such checks like 'gunichar < 0' or 'gunichar > 0'
are always 'false' or 'true'(except when gunichar == 0).

Signed-off-by: Maks Naumov <maksqwe1@ukr.net>
https://bugzilla.gnome.org/show_bug.cgi?id=742774

gtk/gtkbuilder.c
modules/input/gtkimcontextthai.c

index 7b7c166f464718581e8ce3887eb630c6a0206034..b0775d290706234b6c1a8c48bcb11b6f3de7e019 100644 (file)
@@ -1784,7 +1784,7 @@ gtk_builder_value_from_string (GtkBuilder   *builder,
       gunichar c;
       g_value_init (value, G_TYPE_UINT);
       c = g_utf8_get_char_validated (string, strlen (string));
-      if (c > 0)
+      if (c != 0 && c != (gunichar)-1 && c != (gunichar)-2)
         g_value_set_uint (value, c);
       return TRUE;
     }
index 254dfc78fcbfa52a5bce8c91ffae6c72f961a7e1..73510c0360c1153794dc85761bc8f69728a0bd88 100644 (file)
@@ -195,7 +195,7 @@ get_previous_char (GtkIMContextThai *context_thai, gint offset)
       if (offset == 0)
         {
           prev_char = g_utf8_get_char_validated (q, p - q);
-          if (prev_char < 0)
+          if (prev_char == (gunichar)-1 || prev_char == (gunichar)-2)
             prev_char = 0;
         }
       g_free (surrounding);